﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using BAL;

namespace QuanLyTiemNET_DEV_LINQ
{

    public partial class FrmPhongMay : DevExpress.XtraEditors.XtraForm
    {
        public static string maPhong;
        public static Button but;
        public static bool themPhieuThanhCong;
        public static int maPhieuThueMay;
        public static int laymaphieu;
        public FrmPhongMay()
        {
            laymaphieu = 0;
            maPhieuThueMay = 0;
            but = new Button();
            themPhieuThanhCong = false;
            InitializeComponent();
        }

        private void FrmPhongMay_Load(object sender, EventArgs e)
        {

            LoadData();
        }

      
        private void bt_MouseDown(object sender, MouseEventArgs e)
        {
            if (e.Button ==MouseButtons.Right)
            {
                but = (Button)sender;

                
            }
                

        }
        private GroupControl TaoGroupControls(string name,string text,int locationY)
        {
            GroupControl gr = new GroupControl();
            gr.Name = name;
            gr.Text = text;
            gr.DoubleClick+=gr_DoubleClick;
            gr.Location = new Point(0, locationY);
            gr.Width = this.Width;
            gr.Height = 70;
            this.Controls.Add(gr);
            return gr;
            
        }

        private void gr_DoubleClick(object sender, EventArgs e)
        {
            GroupControl gr = (GroupControl)sender;
            DialogResult result = MessageBox.Show("Bạn có muốn thêm máy tính mới vào phòng " + gr.Text + "????", "Thông báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
            if (result == DialogResult.Yes)
            {
                maPhong = gr.Name;
                Form frm = new XtraFormThemMayTinh();
                frm.ShowDialog();
                this.Controls.Clear();
                LoadData();
            }
        }

       

        private void XoaMayTinh(Button b)
        {
            string err = null;

            try
            {
                if (BAL_MAYTINH.DanhDauXoa(ref err, b.Name, true))
                {
                    MessageBox.Show("Xóa thành công!!!!");
                    this.Controls.Clear();
                    LoadData();
                }
                else
                    MessageBox.Show("Lỗi: " + err);

            }
            catch (Exception e1)
            {
                MessageBox.Show(e1.Message);
            }
        }
        private void LoadData()
        {
            int locationY = 0;
            DataTableReader dtrPhong = BAL_PHONG.LayThongTinPhong().CreateDataReader();
            doiMayToolStripMenuItem.DropDownItems.Clear();
            diChuyenMayTinhNayDenPhongKhacToolStripMenuItem.DropDownItems.Clear();
            while (dtrPhong.Read())
            {
                //Những máy chưa bật có thể di chuyen đế phòng khác
                ToolStripMenuItem itemPhong;
                itemPhong = new ToolStripMenuItem();
                itemPhong.Name = dtrPhong["MaPhong"].ToString();
                itemPhong.Text = dtrPhong["TenPhong"].ToString();
                itemPhong.Click += msChildItem_Click;
                diChuyenMayTinhNayDenPhongKhacToolStripMenuItem.DropDownItems.Add(itemPhong);
                //
                    GroupControl grTmp = TaoGroupControls(dtrPhong["MaPhong"].ToString(), dtrPhong["TenPhong"].ToString(), locationY);
                    int i = 1, j = 1;
                    List<Button> btlist = new List<Button>();
                    DataTable dt = BAL_MAYTINH.LayThongTinMT();
                    DataTableReader dtrMT = dt.CreateDataReader();
                    
                    while (dtrMT.Read())
                    {

                        if (dtrMT["MaPhong"].ToString().Equals(grTmp.Name))
                        {
                            Button bt = new Button();

                            bt.Name = dtrMT["MaMay"].ToString();
                            bt.Text = dtrMT["MaMay"].ToString();
                            bt.ForeColor = Color.White;
                            if (bool.Parse(dtrMT["DaCoNguoiThue"].ToString()))
                            {

                                bt.BackgroundImage = Properties.Resources.computer_blue2;
                                bt.ContextMenuStrip = cmsDangDung;
                                bt.MouseDown += bt_MouseDown;
                            }
                            else
                            {
                                //Những máy chưa có người thuê thì có thể đổi máy
                                ToolStripMenuItem itemMay = new ToolStripMenuItem();
                                itemMay.Name = bt.Name;
                                itemMay.Text = bt.Name;
                                itemMay.Click+=tmsItemDoiMay_Click;
                                doiMayToolStripMenuItem.DropDownItems.Add(itemMay);
                                //
                                bt.BackgroundImage = Properties.Resources.computer_black2;
                                bt.ContextMenuStrip = cmsKhongDung;
                                bt.MouseDown += bt_MouseDown;

                            }
                            bt.Size = new Size(65, 65);
                            bt.Location = new Point(70 * j, 70 * i);
                            if (grTmp.Width - bt.Location.X < 65)
                            {
                                i++;
                                j = 1;
                                bt.Location = new Point(70 * j, 70 * i);
                            }
                            if (grTmp.Height - bt.Location.Y < 70)
                                grTmp.Height += 70;



                            btlist.Add(bt);
                            j++;
                        }

                    }
                    foreach (Button b in btlist)
                    {
                        grTmp.Controls.Add(b);
                    }
                    locationY += grTmp.Height + 10;
                

            }
        }

        private void tmsItemDoiMay_Click(object sender, EventArgs e)
        {
            string err = null;
            ToolStripMenuItem item = (ToolStripMenuItem)sender;

            DialogResult result = MessageBox.Show("Bạn có chắc chắn muốn đổi sử dụng máy tính " + but.Name.Trim() + " sang máy " + item.Text.Trim() + " ???", "Thông báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
            if(result==DialogResult.Yes)
            {
                try
                {
                    laymaphieu = BAL_CHITIETTHUEMAY.LayMaPhieu(but.Name);
                    if (!BAL_CHITIETTHUEMAY.CapNhatThanhToan(ref err, laymaphieu, but.Name, DateTime.Now.ToString()))
                    {
                        MessageBox.Show("Lỗi: " + err);
                        return;
                    }
                    if (!BAL_MAYTINH.CapNhatDaCoNguoiThue(ref err, but.Name, false))
                    {
                        MessageBox.Show("Lỗi: " + err);
                        return;
                    }
                    if(!BAL_CHITIETTHUEMAY.ThemCTTM(ref err, laymaphieu,item.Name, DateTime.Now.ToString(), BAL_MAYTINH.LayGiaThueMay(item.Name)))
                    {
                        MessageBox.Show("Lỗi: " + err);
                        return;
                    }
                    if(!BAL_MAYTINH.CapNhatDaCoNguoiThue(ref err,item.Name,true))
                    {
                        MessageBox.Show("Lỗi: " + err);
                        return;
                    }
                    MessageBox.Show("Đã chuyển đổi máy sử dụng thành công!!!");
                    this.Controls.Clear();
                    LoadData();

                }
                catch(Exception e1)
                {
                    MessageBox.Show(e1.Message);
                }
            }
        }

        private void msChildItem_Click(object sender, EventArgs e)
        {
            string err=null;
            ToolStripMenuItem item = (ToolStripMenuItem)sender;
            DialogResult result = MessageBox.Show("Bạn có chắc chắn muốn di chuyển máy tính " + but.Name + " đến phòng " + item.Text + " ???","Thông báo",MessageBoxButtons.YesNo,MessageBoxIcon.Question);
            if(result==DialogResult.Yes)
            {
                try
                {
                    if (BAL_MAYTINH.CapNhatMT(ref err, but.Name, item.Name))
                    {
                        MessageBox.Show("Cập nhật máy tính thành công!!!");
                        this.Controls.Clear();
                        LoadData();
                    }
                    else
                        MessageBox.Show("Lỗi: " + err);
                }
                catch(Exception e1)
                {
                    MessageBox.Show(e1.Message);
                }
            }
        }

       

        private void xoaMayTinhNayToolStripMenuItem_Click(object sender, EventArgs e)
        {
            XoaMayTinh(but);
        }

        private void batDauSuDungToolStripMenuItem_Click(object sender, EventArgs e)
        {
            string err = null;
            Form frm = new XtraFormThemPhieuThueMay();
            frm.ShowDialog();
            if(themPhieuThanhCong)
            {
                if (BAL_MAYTINH.CapNhatDaCoNguoiThue(ref err, but.Name, true))
                {
                    BAL_CHITIETTHUEMAY.ThemCTTM(ref err, maPhieuThueMay, but.Name, DateTime.Now.ToString(), BAL_MAYTINH.LayGiaThueMay(but.Name));
                    MessageBox.Show("Máy đã bắt đầu sử dụng!!!");
                    this.Controls.Clear();
                    LoadData();
                    //but.BackgroundImage = Properties.Resources.computer_blue2;
                }
                else
                    MessageBox.Show("Lỗi: " + err);
            }
        }

        private void msThemDichVu_Click(object sender, EventArgs e)
        {
            Form frm = new XtraFormThemDichVu();
            frm.ShowDialog();
        }

        private void msThanhToan_Click(object sender, EventArgs e)
        {
            //double sogio = 0;
            float tongtien = 0;
            float thanhtien = 0;
            float chietkhau = 0;
            string err = null;
            string makhach=null;
            
            try
            {
                if (DialogResult.Yes == MessageBox.Show("Bạn có chắc chắn muốn thanh toán: " + but.Name + " ???", "Thông báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question))
                {
                    laymaphieu = BAL_CHITIETTHUEMAY.LayMaPhieu(but.Name);
                    DataTableReader dtr = BAL_PHIEUTHUEMAY.LayThongTinPTM().CreateDataReader();
                    while (dtr.Read())
                    {
                        if (int.Parse(dtr["MaPhieu"].ToString()) == laymaphieu)
                        {
                            makhach = dtr["MaKhach"].ToString();
                            break;
                        }
                    }
                    chietkhau = BAL_KHACHHANG.LayChietKhauKH(makhach);
                    if (!BAL_CHITIETTHUEMAY.CapNhatThanhToan(ref err, laymaphieu, but.Name, DateTime.Now.ToString()))
                        MessageBox.Show("Lỗi: " + err);
                    //sogio = BAL_CHITIETTHUEMAY.SoGioSuDung(laymaphieu);
                    tongtien = BAL_PHIEUTHUEMAY.TinhTongTien(laymaphieu);



                    thanhtien = tongtien - tongtien * chietkhau;
                    if (!BAL_PHIEUTHUEMAY.CapNhatPTM(ref err, laymaphieu, makhach, tongtien, chietkhau, thanhtien, DateTime.Now.ToString()))
                        MessageBox.Show("Lỗi: " + err);
                    BAL_MAYTINH.CapNhatDaCoNguoiThue(ref err, but.Name, false);
                    this.Controls.Clear();
                    LoadData();
                    XtraFormHoaDon hd = new XtraFormHoaDon();
                    hd.ShowDialog();
                }


            }
            catch (Exception e1)
            {
                MessageBox.Show(e1.Message);
            }
            
        }

        private void xemDichVuDaSuDungToolStripMenuItem_Click(object sender, EventArgs e)
        {
            laymaphieu = BAL_CHITIETTHUEMAY.LayMaPhieu(but.Name);
            Form frm = new XtraFormXemDichVuDaSuDung();
            frm.ShowDialog();
        }
       
    }
    

}